package co.com.smart.persistence.entity;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import co.com.smart.persistence.entity.dto.SmartZona;
import co.com.smart.persistence.entity.util.AbstractFacade;

/**
 * Session Bean implementation class ZonaFacade
 */
@Stateless(name = "ZonaFacade",
		   mappedName = "ejb/ZonaFacade")
public class ZonaFacade extends AbstractFacade<SmartZona> implements ZonaFacadeLocal {

	@PersistenceContext(unitName = "SmartServicesPU")
	private EntityManager em;
    /**
     * Default constructor. 
     */
    public ZonaFacade() {
       super(SmartZona.class);
    }

    @Override
    protected EntityManager getEntityManager() {
    	return em;
    }
    
    @SuppressWarnings("unchecked")
    @Override
    public List<SmartZona> filtrarzonaxciudad(SmartZona entity) {
       	StringBuilder  sQuery = new StringBuilder("select c from SmartZona c  ");
    		sQuery.append(" where c.smfhretiro is null ");
    		
    		if (entity.getSmartCiudad()  != null && entity.getSmartCiudad().getSmscciudad() != null)
    		{
    			sQuery.append(" and c.smartCiudad = :sm_scciudad ");			
    		}			

    		if(entity.getSmcousuario() != null && !"".equals(entity.getSmcousuario().trim())){
    			sQuery.append(" and c.smcousuario = :sm_cousuario ");
    		}
    		
    		if(entity.getSmdszona() != null && !"".equals(entity.getSmdszona().trim())){
    			sQuery.append(" and c.smdszona like :sm_dszona ");
    		}
    		
    		Query query = em.createQuery(sQuery.toString() );
    		
    		if (entity.getSmartCiudad()  != null && entity.getSmartCiudad().getSmscciudad() != null) {
    			query.setParameter("sm_scciudad", entity.getSmartCiudad());	
    		}
    		
    		if(entity.getSmcousuario() != null && !"".equals(entity.getSmcousuario().trim())) {
    			query.setParameter("sm_cousuario", entity.getSmcousuario().trim());
    		}
    		
    		if(entity.getSmdszona() != null && !"".equals(entity.getSmdszona().trim())) {
    			query.setParameter("sm_dszona", entity.getSmdszona().trim());
    		}
    		
    		return query.getResultList();	
    }
}
